singhal heuristic algorithm distributed systems